/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import interfaces.EmpresaInterface;
import bean.Empresa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


/**
 *
 * @author jcrbsa
 */

public class EmpresaDao implements EmpresaInterface {
    private Connection con;
    private String sql;
    private Empresa empresa;
    private List<Empresa> listaEmpresa;
    
    
    @Override
    public void inserir(Empresa e) {
        try {


            sql = "INSERT INTO EMPRESA(EMPRESA_CNPJ, EMPRESA_NOME_FANTASIA, EMPRESA_RAZAO_SOCIAL, EMPRESA_RAMO,"
                    + "EMPRESA_TELEFONE, EMPRESA_EMAIL, EMPRESA_SENHA, EMPRESA_DESCRICAO)"
                    + " VALUES(?,?,?,?,?,?,?,?)";

            con = new Conexao().getConexao();

            int cont = 1;
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setString(cont++, e.getCnpj());
            stmt.setString(cont++, e.getNome());
            stmt.setString(cont++, e.getRazao_social());
           stmt.setInt(cont++, e.getRamo());
            stmt.setString(cont++, e.getTelefone());
            stmt.setString(cont++, e.getEmail());
            stmt.setString(cont++, e.getSenha());
           stmt.setString(cont++, e.getDescricao());
           
            stmt.executeUpdate();
            stmt.close();

        } catch (SQLException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * Consulta todos os empresas
     *
     * @return uma lista de empresas
     */
    @Override
    public List<Empresa> consulta() {
        List<Empresa> lista_empresa = new ArrayList<Empresa>();
        try {
            sql = "SELECT * FROM EMPRESA";

            con = new Conexao().getConexao();

            PreparedStatement stmt = con.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                Empresa e = new Empresa();
                e.setCnpj(rs.getString("EMPRESA_CNPJ"));
                e.setNome(rs.getString("EMPRESA_NOME_FANTASIA"));
                e.setSenha(rs.getString("EMPRESA_SENHA"));
                e.setEmail(rs.getString("EMPRESA_EMAIL"));
               
               lista_empresa.add(e);
            }

            rs.close();
            stmt.close();

        } catch (SQLException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return lista_empresa;
    }

    @Override
    public void excluir(Empresa e) {

        try {
            con = new Conexao().getConexao();
            sql = "DELETE FROM EMPRESA WHERE EMPRESA_CNPJ = " + e.getCnpj();
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.executeUpdate();
            stmt.close();
        } catch (SQLException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }

    @Override
    public void alterar(Empresa e) {
        try {
            sql = "UPDATE EMPRESA SET EMPRESA_CNPJ = ?, EMPRESA_NOME_FANTASIA=?, EMPRESA_RAZAO_SOCIAL=?, EMPRESA_RAMO=?,"
                    + "EMPRESA_TELEFONE=?, EMPRESA_EMAIL=?, EMPRESA_SENHA=?, EMPRESA_DESCRICAO=? WHERE EMPRESA_CNPJ = " + e.getCnpj();

            con = new Conexao().getConexao();
            int cont = 1;
            PreparedStatement stmt = con.prepareStatement(sql);
            stmt.setString(cont++, e.getCnpj());
            stmt.setString(cont++, e.getNome());
            stmt.setString(cont++, e.getRazao_social());
            //System.out.println(e.getRamo());
            stmt.setInt(cont++, e.getRamo());
            stmt.setString(cont++, e.getTelefone());
            stmt.setString(cont++, e.getEmail());
            stmt.setString(cont++, e.getSenha());
            stmt.setString(cont++, e.getDescricao());
            stmt.executeUpdate();
            stmt.close();

        } catch (SQLException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                con.close();
            } catch (SQLException ex) {
                Logger.getLogger(EmpresaDao.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}
